#include"msgqueue.h"
int msgqueue_create(void)
{
    key_t key;
    int msgid;
    if ((key = ftok("/mnt/msgqueue", 'b')) < 0)
    {
        perror("ftok err");
        return -1;
    }
    printf("key = %#x\n", key);
    //打开或创建消息队列
    msgid = msgget(key, IPC_CREAT | IPC_EXCL | 0666); //创建消息队列，如果之前有就返回-1
    if (msgid <= 0)
    {
        if (errno == EEXIST)
            msgid = msgget(key, 0666); //直接打开消息队列
        else
        {
            perror("msgget err");
            return -1;
        }
    }
    printf("msgid: %d\n", msgid);
    return msgid;

    

    // //读取消息
    // struct msgbuf m;
    // msgrcv(msgid, &m, sizeof(m) - sizeof(long), 10, 0); //10:表示读取消息类型为10的第一个消息， 如果为0表示读取消息队列中的第一个消息
    // printf("%d %c\n", m.num, m.ch);
}